package com.atguigu.ggkt.order.service;

import com.atguigu.ggkt.box.OrderBox;
import com.atguigu.ggkt.model.order.OrderDetail;
import com.atguigu.ggkt.model.order.OrderInfo;
import com.atguigu.ggkt.vo.order.OrderFormVo;
import com.atguigu.ggkt.vo.order.OrderInfoQueryVo;
import com.atguigu.ggkt.vo.order.OrderInfoVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wechat.pay.java.service.payments.jsapi.model.PrepayRequest;
import com.wechat.pay.java.service.payments.jsapi.model.PrepayWithRequestPaymentResponse;

import java.util.Map;

/**
 * <p>
 * 订单表 订单表 服务类
 * </p>
 *
 * @author atguigu
 * @since 2022-04-28
 */
public interface OrderInfoService {

    //订单列表 admin 前端工程使用
    Map<String, Object> selectOrderInfoPage(Page<OrderInfo> pageParam, OrderInfoQueryVo orderInfoQueryVo);
    //订单列表 mobile 前端工程使用
    Map<String, Object> selectOrderInfoPageMobile(Page<OrderInfo> pageParam, Long userId);
    //课程列表 mobile 前端工程使用
    Map<String, Object> selectOrderCoursePageMobile(Page<OrderDetail> pageParam, Long userId);
    //生成订单方法
    String submitOrder(OrderFormVo orderFormVo);

    //订单id获取订单信息
    OrderInfoVo getOrderInfoById(String id);
    //订单 OutTradeNo 获取订单信息
//    OrderInfo getOrderInfoByOutTradeNo(String OutTradeNo);
    //更新订单状态 ：已经支付
//    void updateOrderStatus(String out_trade_no);

    void updateOrderStatus(String out_trade_no, OrderBox orderBox);

    void createPaymentInfo(OrderBox orderBox);

    //用户是否已买某课程
    boolean isBuy(Long courseId, Long userId);
}
